The present invention generally relates to a method and an apparatus for downloading firmware from a connected host or a source requested by an operatively connected client computer, more particularly, it relates to a method and apparatus in the form of a peripheral device for downloading firmware into a non-volatile memory with a backup image partition and a code image partition.
A peripheral device commonly stores its own configuration and operational codes for usage with a computer, which is generally stored as a firmware. The firmware is a collection of the essential programs for the peripheral device that remain in storage even when the system is turned off. The firmware is generally saved in the peripheral device using non-volatile memory or the programmable flash memory. Since the computers need to be upgraded in time, the firmware must also be upgraded for performance or to add new features. As a result, a new firmware must be downloaded and installed periodically by the users.
The non-volatile memory of the firmware is generally divided into several partitions with specific storage definitions according to the type of information that is being stored. For example, there may be four partitions, specifically the Basic Input/Output System (xe2x80x9cBIOSxe2x80x9d) partition, the non-volatile data partition, the code image (xe2x80x9cCIxe2x80x9d) partition, and the backup image (xe2x80x9cBIxe2x80x9d) partition. In this case, the CI partition is used for storage of all the firmware. At the start of a download process, the BI partition stores the backup image of the firmware, which is the basic configuration and utility operations relating to the firmware. The code image of the firmware, which is the codes of the actual firmware, is then saved in the CI partition after a successful download of the backup image.
If the download is successful, the backup image will not be used at all. Because the code image is generally much larger than the backup image, an error, such as a power failure, may occur during the download process of the code image. In that case, the information from the backup image is used to restart the downloading process from the step of downloading the code image instead of starting the download process at the very beginning. The backup image allows for a fail-safe method of downloading.
Previous technology required that the backup image be executed during the download process before it could actually be used. More precisely, the backup image""s instructions must first be carried out (i.e., the execution) before the peripheral device can actually use the basic configuration and utility operations saved in the BI partition to restart the download process in the event of a transmission interruption. This was so because the backup image was saved in the non-volatile memory; but at the same time, it was executed also from the non-volatile memory. Since the backup image did not take effect until execution, the transmission had to be interrupted while awaiting execution of the backup image. Then, the non-volatile memory switched back to the receiving mode.
One problem with this prior method was that the switching and the interruption of the transmission caused errors in greater frequency. As a result, the download process was unreliable.
Another problem was that the switch between the receiving and executing mode, and then switching back to the receiving mode for the CI partition significantly slowed down the download process.
Yet another problem was that the prior method depended upon the use of a simple network management protocol (xe2x80x9cSNMPxe2x80x9d) and a trivial file transfer protocol (xe2x80x9cTFTPxe2x80x9d), which was often very inflexible. As a result, the prior method does not work well with the more standard software available today, such as hypertext transfer protocol (xe2x80x9cHTTPxe2x80x9d) and file transfer protocol (xe2x80x9cFTPxe2x80x9d).
Still another problem was that the prior method depended upon the SNMP Set Community Name for its security, which is transmitted in clear text over the network. Thus, the prior method was insecure because no cryptographic security existed.
Accordingly, an object of the present invention is to provide an improved method for downloading firmware to a peripheral device that does not require execution of the fail-safe data image until the end of the download process.
Another object of the present invention is to provide an improved method for downloading firmware to a peripheral device that is more reliable and faster.
Still another object of the present invention is to provide an improved method for downloading firmware to a peripheral device that is more secure.
A further object of the present invention is to provide an improved method for downloading firmware to a peripheral device that can accommodate the present standard software.
The present invention generally relates to a method and an apparatus in the form of a peripheral device for downloading firmware responsive to a request by an operatively connected client computer from a connected host or a source, and more particularly to a method and peripheral device for downloading firmware into the non-volatile memory with a BI partition and a CI partition. The present method and peripheral device does not require the execution of the fail-safe data image, such as the backup image discussed earlier, during the download process in order for it to take effect, resulting in a more reliable, flexible, and faster method.
In accordance with this invention, the peripheral device first receives a download file for the requested firmware from the client computer. Then, it saves a specific data image of the file into one of the image partitions designated by the data image, and an error check is performed for the data image. If an error with the data image occurs, then the peripheral terminates the process. However, the process is repeated for the next data image of the file if no error is found.